home *** CD-ROM | disk | FTP | other *** search
- #include <stdio.h>
- #include <ctype.h>
- #include "defs.h"
- #include "debug.h"
-
- /*
- * addset - put c in array[i], if it fits, increment i
- *
- */
- int addset(c, array, i, maxsize)
- char c;
- char array[];
- int *i;
- int maxsize;
- {
- int n, status = NO;
-
- dprintf("addset ");
- n = *i;
- if (n <= maxsize - 1)
- {
- array[n++] = c;
- status = YES;
- }
- *i = n;
- return (status);
- }
-
- /*
- * addstr - add string s to str[i] if it fits, increment i
- *
- */
- int addstr(s, str, i, maxsize)
- char s[];
- char str[];
- int *i;
- int maxsize;
- {
- int k, j, status = NO;
-
- dprintf("addstr ");
- j = *i;
- if (j + strlen(s) <= maxsize - 1)
- {
- for (k = 0; s[k] != EOS; k++)
- str[j++] = s[k];
- status = YES;
- }
- *i = j;
- return (status);
- }
-
- /*
- * ctoi - convert string at in[i] to integer, increment i
- *
- */
- int ctoi(in, i)
- char in[];
- int *i;
- {
- int j, n, sign;
-
- dprintf("ctoi ");
- n = 0;
- for (j = *i; in[j] == ' ' || in[j] == '\t'; j++)
- ; /* skip leading garbage */
- sign = 1;
- if (in[j] == '+' || in[j] == '-') /* sign */
- sign = (in[j++] == '+') ? 1 : -1;
- for (n = 0; in[j] >= '0' && in[j] <= '9'; j++)
- n = 10 * n + in[j] - '0';
- *i = j;
- return (sign * n);
- }
-
- /*
- * error - print message and terminate
- *
- */
- error(s)
- char s[];
- {
- fprintf(stderr, "%s\n", s);
- exit(1);
- }
-
- /*
- * getwrd - get non-blank word from in[i] into out, increment i
- *
- */
- int getwrd(in, i, out)
- char in[];
- int *i;
- char out[];
- {
- int j, size = 0;
-
- for (j = *i; in[j] == '\t' || in[j] == ' '; j++)
- ; /* skip leading garbage */
- while (in[j] != ' ' && in[j] != '\t' && in[j] != EOS && in[j] != '\n')
- out[size++] = in[j++];
- out[size++] = EOS;
- *i = j;
- #ifdef DEBUG
- printf("getwrd: %s\n", out);
- #endif
- return (size);
- }
-
- /*
- * skipbl - skip blanks, tabs at str[i], increment i
- *
- */
- skipbl(str, i)
- char str[];
- int *i;
- {
- int n;
-
- dprintf("skipbl ");
- n = *i;
- while (str[n] == ' ' || str[n] == '\t')
- n++;
- *i = n;
- }
-
- /*
- * itoc - special version of itoa
- *
- */
- int itoc(n, str, size)
- int n;
- char str[];
- int size;
- {
-
- int i, j, k, sign;
- char c;
-
- dprintf("itoc ");
- if ((sign = n) < 0)
- n = -n;
- i = 0;
- do
- {
- str[i++] = n % 10 + '0';
- } while ((n /= 10) > 0 && i < size - 2);
- if (sign < 0 && i < size - 1)
- str[i++] = '-';
- str[i] = EOS;
- /*
- * reverse the string and plug it back in
- *
- */
- for (j = 0, k = strlen(str) - 1; j < k; j++, k--)
- {
- c = str[j];
- str[j] = str[k];
- str[k] = c;
- }
- return (i);
- }
-
- /*
- * usage - obvious..
- *
- */
- usage()
- {
- #ifdef rainbow
- fprintf(stderr, "%s %s",
- "usage: proff \033[7m[+n] [-n] [-v] [-ifile] [-s] [-pon]\033[0m",
- "\033[1minfile\033[0m \033[7m[outfile]\033[0m\n");
- #else
- fprintf(stderr,
- "usage: proff [+n] [-n] [-v] [-ifile] [-s] [-pon] infile [outfile]");
- #endif
- exit(0);
- }